Skip to main content
Version: 1.1.4

Описание операций

Настройка сервера как контролер домена

Для создания контроллера домена необходима виртуальная машина с Windows Server 2019 или 2016.

  1. Прописать сетевые настройки на сервере: ip, маску, шлюз, в dns указываем свой ip, так как на сервере будет использоваться роль dns server, она устанавливается вместе с ролью active directory domain services.
  2. Открыть Диспетчер серверов, и выберите пункт «Add roles and features».
  1. Укажите Role-based or feature-based installation в качестве типа установки.
  2. Выберете ваш сервер из пула.
  3. Добавьте роль Active Directory Domain Services (Доменные службы Active Directory).
  4. Добавьте компоненты.
  5. Установите все отмеченные компоненты с помощью кнопки Установить.
  6. После установки нажимаем Закрыть.
  7. Откройте Диспетчер серверов и перейдите в роль AD DS.
  1. В меню нажмите на восклицательный знак (уведомления) и выберете Promote this server to a domain controller (Повысить роль этого сервера до уровня контроллера).
  2. В появившемся окне настроек выберите «Добавить новый лес» (т.к. действия выполняются впервые) и введите ваше доменное имя.
  3. Если домен новый (как в нашем случае) и в дальнейшем планируется использовать операционные системы не ниже Windows Server 2016, то режим работы леса и режим работы домена не меняем. Проверяем что установлена галочка на DNS-сервер.
  4. Установите пароль для режима восстановления службы каталогов и нажмите Далее.
  5. В Параметрах DNS ничего не меняем и нажимаем Далее.
  6. Укажите удобное имя домена NetBIOS. Рекомендуем оставить значения по умолчанию.
  7. Укажите пути до базы данных AD DS, файлов журналов и папки SYSVOL. Рекомендуем оставить значения по умолчанию.
  8. Проверьте настроенные параметры.
  9. Проверка предварительных требований сообщит все ли условия соблюдены и выведет отчет. Если проблем никаких не возникло, то мы сможем нажать кнопку Установить.
  10. После выполнения процесса повышения роли сервера до контроллера домена, сервер автоматически перезагрузится.

Настройка Keycloak

  1. Войти в Keycloak под технической учетной записью.
  2. Нажмите на кнопку Create realm.
  1. Перейдите в раздел меню User Federation и нажмите кнопку Add new provider > LDAP.
  1. На вкладке Settings заполните поля согласно настройкам вашего AD: Connection URL, Bind ON, Bind credentials.

Для проверки соединения нажмите Test authentication.

  1. Сохраните настройки с помощью кнопки «Сохранить».
  2. Перейдите на вкладку Mappers, затем Add mapper.
  1. Заполните данные согласно рисунку:
  1. Создать маппер групп: Add mapper.
  1. Сохраните настройки с помощью кнопки «Сохранить».
  2. Перейдите в раздел меню Clients и создайте клиент для подсистемы Recsystem согласно картинке:
  1. На вкладке «Access settings» настройте клиент как на картинке:
  1. На вкладке «Advanced settings» настройте клиент как на картинке:
  1. Перейдите на вкладку Service accounts roles и нажмите Assign role.
  1. Выберите группы как на картинке:
  1. Выполните синхронизацию групп.

Установка Docker

  1. Выполнить обновление пакетов:
sudo apt-get update
  1. Установить вспомогательные пакеты с помощью команды:
apt-get install ca-certificates curl gnupg lsb-release
  1. Подключить репозиторий с Docker:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. Выполнить обновление пакетов:
sudo apt-get update
  1. Установить Docker:
sudo apt-get install docker-ce docker-ce-cli containerd.io

Сборка и запуск docker-контейнеров модулей STN

Установка Модуля определения типа связи

  1. Скопировать полученный образ в папку /opt и загрузить его в Docker:
sudo docker load --input log-rel.tar.gz 
  1. Создать папку /opt/log-rel_compose:
sudo mkdir /opt/log-rel_compose
  1. Создать файл compose.yml:
sudo nano /opt/log-rel_compose/compose.yml
  1. Заполнить содержимое /opt/log-rel _compose/compose.yml следующим содержанием:
version: "3.9"
services:
app:
image: log-rel-protected:latest
command: python run.py
ports:
- "8282:8000"
depends_on:
- redis
environment:
- REDIS_OM_URL=redis://redis:6379/0
restart: always

worker:
image: log-rel-protected:latest
command: python -m app.worker
depends_on:
- redis
environment:
- REDIS_OM_URL=redis://redis:6379/0
restart: always
volumes:
- .cache:/.cache

redis:
image: redis/redis-stack:latest
ports:
- "127.0.0.1:6379:6379"
restart: always
  1. Настроить модуль с помощью переменных окружения:

Описание переменных окружения

Наименование переменнойОписание
1TITLEНазвание сервиса (по умолчанию: "LOG-REL service")
2HOSTАдрес хоста, на котором запускается сервис (по - умолчанию: "0.0.0.0")
3PORTПорт, на котором запускается сервис (по умолчанию: 8000)
4MIN_TEXT_LENGTHМинимальная длина текста (по умолчанию: 3)
5MAX_TEXT_LENGTHМаксимальная длина текста (по умолчанию: 3000)
6CACHE_PATHПуть к директории для кеширования (по умолчанию: .cache)
7MODEL_ID_OR_PATHИдентификатор или путь к модели (по умолчанию: cointegrated/rubert-base-cased-nli-threeway)
8ENCODER_ID_OR_PATHИдентификатор или путь к энкодеру (по умолчанию: cointegrated/rubert-tiny2)
9REDIS_OM_URLURL для подключения к Redis
10REDIS_TTLВремя жизни кеша в секундах (по умолчанию: 3600 секунд или 1 час)
11REDIS_TASK_QUEUE_NAMEИмя очереди задач (по умолчанию: task_id_queue)

Важно: Переменная REDIS_OM_URL не имеет значения по умолчанию, его нужно задать!

Например, можно задать переменные окружения через .env файл:

echo "REDIS_OM_URL=redis://127.0.0.1:6379/0" > .env
  1. Выполнить команды перехода в созданную папку и сборки контейнера:
cd /opt/log-rel _compose/
  1. Запуск докер-контейнера:
sudo docker compose up -d

Установка Модуля Генеративных ответов

  1. Скопировать полученный образ в папку /opt и загрузить его в докер:
sudo docker load --input assistant.tar.gz
  1. Создать папку assistant_compose
sudo mkdir /opt/assistant_compose/
  1. Создать файл compose.yml
sudo nano /opt/assistant_compose/compose.yml
  1. Заполнить содержимое compose.yml следующим содержанием:
version: "3.9"
services:
app:
image: assistant-protected:latest
command: uvicorn app.main:app --port ${PORT:-8019} --host 0.0.0.0
ports:
- ${PORT:-8019}:8019
env_file:
- .env
restart: always
  1. Создать файл .env
sudo nano  /opt/assistant_compose/.env
  1. Заполнить содержимое файла /opt/assistant_compose/.env.

Описание переменных окружения

Наименование переменнойОписание
1ASSISTANT_API_KEYКлюч LLM API. Обязательный параметр
2ASSISTANT_MODEL_NAMEИмя LLM модели. Обязательный параметр (по умолчанию: IlyaGusev/saiga_gemma2_9b)
3ASSISTANT_API_URLАдрес LLM API. Обязательный параметр
4ASSISTANT_MODEL_MAX_TOKENSРазмер контекстного окна LLM. Обязательный параметр (по умолчанию: 4096)
5ASSISTANT_MODEL_DEFAULT_RESERVED_TOKENSКоличество зарезервированных токенов LLM (по умолчанию: 600)
  1. Запуск докер-контейнера:
sudo docker compose up -d

Запуск сервиса API+LLM

  1. Установить заголовки ядра:
sudo apt-get install linux-headers-$(uname -r)
  1. Установить CUDA по инструкции: https://developer.nvidia.com/cuda-downloads

  2. Проверьте, что CUDA установлена:

nvidia-smi
  1. Запустите сервис:
docker compose up -d

Примечание: Убедитесь, что .env и docker-compose.yml настроены корректно перед запуском.

Запуск только API (если LLM на другом сервере)

docker compose up -d --scale llm=0

Примечание: Убедитесь, что .env и docker-compose.yml настроены корректно перед запуском.

Установка Модуля семантического анализа

  1. Запуск докер-контейнера:
sudo docker run --name=recsystem -d -p 8089:8080 -e AllowedHosts=* -e Ais_Host=http://iw-astra-ais-01.msk.innowave.ai/ -e Default_Index=gost -e AUTH_CLIENT_ID=recsystem -e AUTH_URL=https://krbauth.docker.stereos-group.ru -e AUTH_CLIENT_SECRET=BIbozDXMCO5gF***NowZxYgIOn  -e AUTH_REALM_NAME=searchai-recsystem -e Ais_User=SUser -e Ais_Password=P@ssw0rd -e Ais_DomainName=msk.innowave.ai -e Word_Count_In_One_Query=3 -e Max_Gap_Between_Paragraphs=50 -e Percentage_Word_Contains=10 -e Max_Chars_Overflow=23 -e Percentage_Docs_Contains=80 -e Percentage_Of_Similarity=80 -e String_Terminator='\n.' -e AUTH_ENABLED=true cr.yandex/crp51*******p98t9i9/iw-ais-recsystem-winauth

Описание переменных окружения

Наименование переменнойОписание
1AUTH_CLIENT_IDНаименование клиента в keycloak
2AUTH_CLIENT_SECRETСекретный ключ для клиента keycloak
3AUTH_URLАдрес keycloak
4AUTH_REALM_NAMEНаименование реалма в keycloak
5AIS_ServiceUrlАдрес AIS
6Default_IndexНаименование индекса по умолчанию
7AIS_UserЛогин суперпользователя AIS
8AIS_PasswordПароль суперпользователя AIS
9AIS_DomainNameДомен, в котором находится AIS
10Word_Count_In_One_QueryМаксимальное количество слов в одном запросе к AIS (для разбивки)
11Max_Gap_Between_ParagraphsМаксимальное количество символов между найденными группами, чтобы объединить их в одну
12Percentage_Word_ContainsПроцент слов которые должны совпасть из запроса и выдаче, чтобы считать выдачу валидной
13Max_Chars_OverflowКоличество добавочных символов в конец выборки до последнего пробела или до стоп символов
14Percentage_Docs_ContainsПроцент документов в общем списке выдачи. которые должны повторяться, чтобы считать документ похожим
15Percentage_Of_SimilarityКаков процент похожести по длине относительно входящей строке должен быть результат. 0 - выдаёт все, 100 - должно быть не менее длины запроса
16String_TerminatorСтоп символы для продления строки из выдачи (по умолчанию ;.\r\n)
17AUTH_ENABLEDФлаг активации авторизации

Установка Модуля хранения

  1. Установка docker образа БД:
sudo docker pull postgres:16.3
sudo docker run -itd -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=P@ssw0rd -p 5432:5432 -v ./data:/var/lib/postgresql/data --name postgresql postgres:16.3
  1. Запуск докер-контейнера:
sudo docker run -d --name searchservicearchive -p 3500:8080 -e AUTH_CLIENT_ID=recsystem -e AUTH_CLIENT_SECRET=BIbozDXMCO5gF***NowZxYgIOn -e AUTH_URL=https://krbauth.docker.stereos-group.ru -e AUTH_REALM_NAME=searchai-recsystem -e ASPNETCORE_ENVIRONMENT=Development -e ConnectionString='Host=st-ubn-stn-***.stereos-group.ru;Port=5433;Database=SearchaiArchive;Username=postgres;Password=P@ssw0rd' cr.yandex/crp516dtlnlrjp98t9i9/search-ai-service-archive

Описание переменных окружения

№ п./п.Наименование переменнойОписание
1AUTH_CLIENT_IDНаименование клиента в keycloak
2AUTH_CLIENT_SECRETСекретный ключ для клиента keycloak
3AUTH_URLАдрес keycloak
4AUTH_REALM_NAMEНаименование реалма в keycloak
5ASPNETCORE_ENVIRONMENTСреда выполнения .Net
6ConnectionStringСтрока подключения к базе данных для работы сервиса

Установка ProxyBack

  1. Запуск докер-контейнера:
sudo docker run -d --name proxyback -p 3499:8080 -e AUTH_CLIENT_ID=recsystem -e AUTH_CLIENT_SECRET=BIbozDXMCO5gF***NowZxYgIOn -e AUTH_URL=https://krbauth.docker.stereos-group.ru -e AUTH_REALM_NAME=searchai-recsystem -e AIS_ServiceUrl=http://iw-astra-ais-01.msk.innowave.ai/ -e DEFAULT_INDEX=gost -e AIS_User=Suser -e AIS_Password=P@ssw0rd -e AIS_DomainName=msk.innowave.ai -e LOG_REL_ServiceUrl=http://st-ubn-stn-server.stereos-group.ru:8282 -e ASS_ServiceUrl=http://st-ubn-stn-server.stereos-group.ru:8019 -e REC_SYS_ServiceUrl=http://st-ubn-stn-server.stereos-group.ru:8089 -e ARCHIVE_ServiceUrl=http://st-ubn-stn-server.stereos-group.ru:3500 -e AUTH_ENABLED=true cr.yandex/crp51*******p98t9i9/search-ai-service

Описание переменных окружения

№ п./п.Наименование переменнойОписание
1AUTH_CLIENT_IDНаименование клиента в keycloak
2AUTH_CLIENT_SECRETСекретный ключ для клиента keycloak
3AUTH_URLАдрес keycloak
4AUTH_REALM_NAMEНаименование реалма в keycloak
5AIS_ServiceUrlАдрес AIS
6DEFAULT_INDEXНаименование индекса по умолчанию
7AIS_UserЛогин суперпользователя AIS
8AIS_PasswordПароль суперпользователя AIS
9AIS_DomainNameДомен, в котором находится AIS
10LOG_REL_ServiceUrlАдрес сервиса log-rel
11ASS_ServiceUrlАдрес сервиса assistant
12REC_SYS_ServiceUrlАдрес сервиса рекомендательной системы
13ARCHIVE_ServiceUrlАдрес сервиса архивации
14AUTH_ENABLEDФлаг активации авторизации

Установка модуля «Рабочее место пользователя»

  1. Создать папку /opt/FrontendConfig
  2. Создать файл /opt/FrontendConfig/app_config.json с содержимым:
  {
"classification": "true",
"generation": "true",
"entity": "true",
"logo": "default",
"KEYCLOAK": "https://krbauth.docker.stereos-group.ru/realms/searchai-recsystem/protocol/openid-connect",
"clientID": "recsystemPKCE",
"enableGuest": "true",
"isMarkInaccessibleDocs": "true",
"url_backendapi":"http://st-ubn-stn-server.stereos-group.ru:3499",
"url_backendapi_dev": "http://st-ubn-stn-server.stereos-group.ru:3499",
"indexName":"gost",
"sourcesName": "FileSystem"
}

Где:

  • KEYCLOAK – URL-адрес сервера Keycloak;
  • clientID – имя клиента, созданного для авторизации с использованием PKCE в Keycloak;
  • url_backendapi – адрес Proxy-back сервера.
  1. Запуск докер-контейнера:
sudo docker run -d -p 5000:5000 -v /opt/FrontendConfig/app_config.json:/src/dist/app_config.json --name frontend cr.yandex/crp51*******p98t9i9/stn-frontend

Настройка кластеризации компонентов

Настройка кластеризации поисковых компонентов AIS осуществляется в соответствии с Content AI Intelligent Search - Руководство по установке. Для настройки кластеризации остальных компонентов Системы используется HAProxy по протоколу TCP. Для настройки:

  1. Откройте конфигурационный файл HAProxy. Обычно он находится в /etc/haproxy/haproxy.cfg на Linux.
  2. Настройте глобальные параметры
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
stats timeout 30s
user haproxy
group haproxy
daemon
  1. Настройте параметры по умолчанию:
defaults
log global
mode tcp
option tcplog
option dontlognull
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
maxconn 2048
  1. Настройте фронтенд и проксибек для балансировки TCP трафика:
 frontend my_frontend
bind :N – порт для прослушивания
default_backend my_backend
backend my_backend
balance leastconn
mode tcp
server server1 192.168.1.101:5000 check – Адрес сервера 1
server server2 192.168.1.102:5000 check – Адрес сервера 2
server server3 192.168.1.103:5000 check – Адрес сервера 3
frontend proxyback
bind : N – порт для прослушивания
default_backend my_backend
backend proxyback_backend
balance leastconn
mode tcp
server server1 192.168.1.101:5000 check – Адрес сервера 1
server server2 192.168.1.102:5000 check – Адрес сервера 2
server server3 192.168.1.103:5000 check – Адрес сервера 3
frontend logrel
bind : N – порт для прослушивания
default_backend logrel_backend
backend logrel_backend
balance leastconn
mode tcp
server logrel_server1 192.168.1.101:5000 check – Адрес сервера 1
server logrel_server2 192.168.1.102:5000 check – Адрес сервера 2
server logrel _server3 192.168.1.103:5000 check – Адрес сервера 3
frontend assistant
bind : N – порт для прослушивания
default_backend logrel_backend
backend assistant_backend
balance leastconn
mode tcp
server assistant _server1 192.168.1.101:5000 check – Адрес сервера 1
server assistant_logrel_server2 192.168.1.102:5000 check – Адрес сервера 2
server assistant _server3 192.168.1.103:5000 check – Адрес сервера 3
frontend reksystem
bind : N – порт для прослушивания
default_backend logrel_backend
backend reksystem_backend
balance roundrobin
option tcp-check
server reksystem_server1 192.168.1.107:8000 check
server reksystem_server2 192.168.1.108:8000 check
server reksystem_server3 192.168.1.109:8000 check
  1. Сохраните и закройте конфигурационный файл.
  2. Перезапустите HAProxy для применения изменений:
sudo systemctl restart haproxy